package com.igeek.javase.extendstest;


/**
 * 1.写一个类Person,包含以下属性：
 String  name;
 int  age;
 boolean  gender;  //性别  true男  false女
 Person  partner;  //伴侣
 为Person类写一个marry(Person  p)方法，代表当前对象和p结婚，如若可以结婚，则输出恭贺信息，
 否则输出不能结婚原因。要求在另外一个类中写一个主方法，来测试以上程序。
 （下列情况不能结婚：1，同性；2，未达到结婚年龄，男<24，女<22；3，某一方已婚）
 */



public class Person {

    private String name;
    private int age;
    private boolean gender;
    private Person partner;  //null 没有伴侣

    public Person(String name, int age, boolean gender, Person partner) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.partner = partner;
    }

    public String getName(){
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge(){
        return this.age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public boolean getGender(){
        return this.gender;
    }
    public void setGender(boolean gender) {
        this.gender = gender;
    }

    public Person getPartner(){
        return this.partner;
    }
    public void setPartner(Person partner) {
        this.partner = partner;
    }

    //判断年龄是否合法
    public boolean isAge(){
        //未达到结婚年龄，男<24，女<22；
        if(this.gender&&age>=24 || !gender&&age>=22){
            return true;
        }
        return false;
    }


    public void marry(Person p){
        //1，同性；
        if(this.gender == p.gender){
            System.out.println("同性");
            return;
        }
        //2，未达到结婚年龄，男<24，女<22；
        if(!this.isAge() || !p.isAge()){
            System.out.println("未达到结婚年龄");
            return;
        }
        //3，某一方已婚
        if(this.partner!=null || p.partner!=null){
            System.out.println("滚");
            return;
        }

        //允许结婚
        System.out.println("恭喜");
        this.partner = p;
        p.partner = this;
    }


}
